package com.manong.config.mybatis;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author 李茂鑫
 * @Date 2025/1/12 16:29
 * @Descripition
 */
@Configuration
//表示当前类是一个配置类，相当于一个 Java 配置文件。
// Spring 会自动识别该类，并将其作为应用上下文的一部分加载。配置类通常用于定义 Bean（即 Spring 管理的对象）和应用的其他配置。
public class mybatis {
    @Bean
    //@Bean 注解告诉 Spring 容器，该方法返回的对象将作为一个 Bean 注册到 Spring 上下文中，意味着这个对象会由 Spring 管理，并且可以在其他地方进行注入。
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
        //提供的拦截器，用于集成各种功能，譬如分页、性能分析等。这里创建一个拦截器对象
        PaginationInnerInterceptor paginationInnerInterceptor=new PaginationInnerInterceptor(DbType.MYSQL);
        // 提供的分页拦截器，处理 SQL 查询的分页逻辑。
        paginationInnerInterceptor.setOverflow(true);
        //设置分页溢出时的处理方式。setOverflow(true) 表示如果查询的页码超过了最大页码时，返回第一页，而不是返回空数据。
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        //MybatisPlusInterceptor 可以容纳多个拦截器（包括分页拦截器），而通过 addInnerInterceptor 方法将分页拦截器注册到 MyBatis Plus 拦截器链中。
        return interceptor;
    }

}
